<?php
class ImportarRelatorioDAO implements BaseDAO {
	
	private $qry = "INSERT INTO siex.relatorios(relatorio_nome,
												relatorio_campo_pagina,
												relatorio_campo_linha,
												relatorio_campo_dado,
												relatorio_filtros,
												usuario_rel_login)
					 VALUES (%s,%s,%s,%s,%s,%s)";
	
	/* Remove o relatorio do usuario */
	public function importarRelatorio($id, $relatorio) {
		$utility = QueryUtility::getInstance();
		try {
			$query = $utility->getQuery(QueryConstants::RELATORIO_POR_ID,$relatorio->getId());
			$conexao = new Conexao();	
			
			$result = $conexao->executar($query);
			$nvQuery = $this->prepararQuery($result,$relatorio);
			
			$conexao = new Conexao();
			$result = $conexao->executar($nvQuery);
			
			$status = $this->mapearResultados($result);
		} catch (Exception $exc) {
			throw $exc;
		}
		
		return true;		
	}
	
	/* Prepara a query */
	private function prepararQuery($result, $relatorio) {
		$nome = $relatorio->getNome();
		
		$row = pg_fetch_assoc($result);
		$pagina = trim($row["relatorio_campo_pagina"]);	
		$linha = trim($row["relatorio_campo_linha"]);
		$dados = trim($row["relatorio_campo_dado"]);
		$filtros = trim($row["relatorio_filtros"]);
		$usuario = Controller::getUsuario();
		$nomeUs = trim($usuario->getNome());
		
		$query = sprintf($this->qry,
						 $this->quote($nome),
						 $this->quote($pagina),
						 $this->quote($linha),
						 $this->quote($dados),
						 $this->quote($filtros),
						 $this->quote($nomeUs));
		
		return $query;		
	}
	
	/* Mapeia os resultados */
	function mapearResultados($result) {
		if (pg_affected_rows($result) == 0) {
			$msg = sprintf(MensagensConstants::FALHA_NA_IMPORTACAO_REMOCAO, "importar");
			throw new Exception(msg);
		} else {
			return true;
		}
	}
	
	/* Formata a query */
	private function quote($value) {
		return "'" . addslashes($value) . "'";
	}
	
}
?>